"""
字符串忽略大小写的搜索替换

问题：
    你需要以忽略大小写的方式搜索与替换文本字符串。
解决方案：
    为了在文本操作时忽略大小写，你需要在使用 re 模块的时候给这些操作提供 re.IGNORECASE 标志参数。
"""

import re


def use_ignore_case():
    context = "Life is short, You need Python."
    print(re.findall("python", context, flags=re.IGNORECASE))
    print(re.sub("You", "I", context, flags=re.IGNORECASE))
    # 输出结果：
    """
    ['Python']
    Life is short, I need Python.
    """


def match_case(word):
    """
    和大小写保持一致
    """

    def replace(m):
        text = m.group()
        if text.isupper():
            return word.upper()
        elif text.islower():
            return word.lower()
        elif text[0].isupper():
            return word.capitalize()
        else:
            return word

    return replace


def use_match_case():
    context = "Life is short, You need Python."
    print(re.sub("you", match_case("i"), context, flags=re.IGNORECASE))
    # 输出结果：
    """
    Life is short, I need Python.
    """


if __name__ == '__main__':
    use_ignore_case()
    use_match_case()
